package cn.drenal.capcap.exception;

import cn.drenal.capcap.common.ResponseCode;
import lombok.Getter;

/**
 * 业务异常类
 */
public class BizException extends RuntimeException {
    /**
     * 错误码
     */
    @Getter
    private final int code;

    /**
     * 错误消息
     */
    private final String message;

    /**
     * 使用ResponseCode构造业务异常
     *
     * @param responseCode 响应状态码
     */
    public BizException(ResponseCode responseCode) {
        this(responseCode.getCode(), responseCode.getMessage());
    }

    /**
     * 使用ResponseCode和自定义消息构造业务异常
     *
     * @param responseCode 响应状态码
     * @param message      自定义错误消息
     */
    public BizException(ResponseCode responseCode, String message) {
        this(responseCode.getCode(), message);
    }

    /**
     * 使用自定义错误码和消息构造业务异常
     *
     * @param code    错误码
     * @param message 错误消息
     */
    public BizException(int code, String message) {
        super(message);
        this.code = code;
        this.message = message;
    }

    /**
     * 使用自定义消息构造业务异常，错误码默认为500
     *
     * @param message 错误消息
     */
    public BizException(String message) {
        this(ResponseCode.INTERNAL_SERVER_ERROR.getCode(), message);
    }

    @Override
    public String getMessage() {
        return message;
    }
}